const express = require('express');
const router = express.Router();
const pool = require('../DB/db');
const jwt = require('jsonwebtoken');

// 定义一个密钥，用于生成和验证 token
const secretKey = 'wode';

// 登录接口
router.post('/login', async (req, res) => {
  console.log(req);

  const { name, pwd } = req.body;
  try {
    // 查询数据库，查找匹配的用户
    const [rows] = await pool.execute('SELECT * FROM user WHERE name = ? AND pwd = ?', [name, pwd]);
    if (rows.length > 0) {
      // 登录成功
      const user = rows[0];

      // 生成 token
      const token = jwt.sign({
        id: user.id,
        username: user.name
      }, secretKey, {
        expiresIn: '1h' // token 有效期为 1 小时
      });

      res.status(200).json({
        message: '登录成功',
        user: {
          id: user.id,
          name: user.name,
          power: user.power
        },
        token
      });
    } else {
      // 登录失败
      res.status(401).json({
        message: '用户名或密码错误'
      });
    }
  } catch (error) {
    console.error('数据库查询出错:', error);
    res.status(500).json({
      message: '服务器内部错误'
    });
  }
});

// 注册接口
router.post('/register', async (req, res) => {
  const { name, pwd } = req.body;
  try {
    // 检查用户名是否已存在
    const [rows] = await pool.execute('SELECT * FROM user WHERE name = ?', [name]);
    if (rows.length > 0) {
      return res.status(400).json({ message: '用户名已存在' });
    }
    // 插入新用户
    await pool.execute('INSERT INTO user (name, pwd,power) VALUES (?, ?,?)', [name, pwd, 2]);
    res.status(201).json({ message: '注册成功' });
  } catch (error) {
    console.error('注册失败', error);
    res.status(500).json({ message: '注册失败，请稍后重试' });
  }
});


// token验证接口
// 验证 Token 的接口
router.post('/validate-token', (req, res) => {
  const { token } = req.body;
  if (!token) {
    return res.status(400).json({ message: 'Token 未提供', valid: false });
  }
  try {
    // 验证 Token
    const decoded = jwt.verify(token, secretKey);
    res.status(200).json({ message: 'Token 验证成功', valid: true, decoded });
  } catch (error) {
    if (error.name === 'TokenExpiredError') {
      res.status(401).json({ message: 'Token 已过期', valid: false });
    } else if (error.name === 'JsonWebTokenError') {
      res.status(401).json({ message: 'Token 无效', valid: false });
    } else {
      res.status(500).json({ message: '服务器内部错误', valid: false });
    }
  }
});



module.exports = router;